import Vue from 'vue'
import ElementUI from 'element-ui'
import VueRouter from 'vue-router'


import router from './router/index.js'
// import uuid from 'uuid';
import 'element-ui/lib/theme-chalk/index.css';

import axios from 'axios'
import Chat from 'jwchat';


Vue.prototype.$http = axios; //把Vue默认的$http请求改成axios ,在其它.vue文件中就可以用this.$http.get()发送异步请求了

Vue.use(Chat);
Vue.use(ElementUI);
Vue.use(VueRouter);
import App from './App.vue' //导入当前项目src目录下的App.vue组件，把组件名称定义为App

Vue.config.productionTip = false

/* eslint-disable no-new */
let vm = new Vue({
	el: '#app',
	components: {
		App
	},
	router: router,
	template: '<App/>',
	//注册全局事件总线 组件之间要进行通信
	beforeCreate() {
		Vue.prototype.$bus = this
	}
})

console.log('vm',vm);


axios.defaults.baseURL = "http://localhost:8080"
//添加ajax请求和响应的拦截器(过滤器)
// 添加请求拦截器
axios.interceptors.request.use(function(config) {
	// 在发送请求之前做些什么
	//console.log("拦截到Ajax请求:", config)

	//if (config.params){ //判断config.params是否不为空，不为空则添加一个access_token参数将用户登录的token值传递给后端
	// {name:xx,nama:va}

	// config.params={bookName:"",bookType:"",currentPage:1}

	//config.params.access_token=window.sessionStorage.getItem("loginUserinfo")
	// config.params={bookName:"",bookType:"",currentPage:1,access_token:xxx}
	// }else{
	//      //给config增加一个params属性，属性值为一个对象
	//      config.params={access_token:window.sessionStorage.getItem("loginUserinfo")}
	// }

	//把token放到请求头中

	config.headers.Authorization = window.sessionStorage.getItem('token')

	//config.params
	//config.url
	return config;
}, function(error) {
	// 对请求错误做些什么
	return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function(response) {
	// 2xx 范围内的状态码都会触发该函数。
	// 对响应数据做点什么
	//console.log("拦截到服务端的响应结果:", response);
	if (response.data.code == 999) {
		//console.log("拦截到服务返回的错误码为999,应该跳转到登录界");
		router.push({
			path: '/login'
		});
	}
	return response;
}, function(error) {
	// 超出 2xx 范围的状态码都会触发该函数。
	// 对响应错误做点什么
	return Promise.reject(error);
});
